perm filename LEVEL2.SAI[4,ALS]1 blob sn#055604 filedate 1973-07-31 generic text, type T, neo UTF8
00010	PROCEDURE LEVEL2;
00020	BEGIN "LEV"
00030	
00040	INTEGER I,J,K,L;
00050	INTEGER BSTCNT,BSTHNT;
00060	INTEGER ARRAY HINT2,DUR2,TMP[0:31];
00070	INTEGER ARRAY CMAX2[0:16,0:31];
00080	INTEGER ARRAY BESTN,BESTP[0:7,0:31];
00085	INTEGER ARRAY CONTEX[0:63,0:63];
00087	INTEGER ARRAY PROB[0:63];
00090	
00100	PROCEDURE MERGE;
00110	BEGIN "MERGE"
00120	INTEGER K;
00130	BESTP[7,N]←J; BESTN[7,N]←L;
00140	FOR K←7 STEP -1 UNTIL 1 DO IF BESTP[K,N]> BESTP[K-1,N] THEN BEGIN
00150	  L←BESTN[K-1,N]; BESTN[K-1,N]←BESTN[K,N]; BESTN[K,N]←L;
00160	  J←BESTP[K-1,N]; BESTP[K-1,N]←BESTP[K,N]; BESTP[K,N]←J; END ELSE DONE;
00170	END "MERGE";
00180	
00190	PROCEDURE SORT;
00200	BEGIN
00210	INTEGER I,J,K;
00220	FOR I←0 STEP 1 UNTIL 6 DO
00230	  FOR J←I+1 STEP 1 UNTIL 7 DO IF BESTP[I,N]< BESTP[J,N] THEN BEGIN
00240	    K←BESTN[I,N]; BESTN[I,N]←BESTN[J,N]; BESTN[J,N]←K;
00250	    K←BESTP[I,N]; BESTP[I,N]←BESTP[J,N]; BESTP[J,N]←K; END; END;
00260	
00270	PROCEDURE SETUP;
00280	BEGIN "SETUP"
00290	INTEGER I,J,K,ISUM,JSUM,SUM;
00300	FOR I←0 STEP 1 UNTIL 63 DO BEGIN
00305	  JSUM←0;
00310	  FOR J←0 STEP 1 UNTIL 63 DO JSUM+CONTEX[I,J] LAND '777777;
00320	  FOR J←0 STEP 1 UNTIL 63 DO BEGIN
00322	    K←((CONTEX[I,J] LAND '777777)*512)%JSUM;
00325	    CONTEX[I,J]←(CONTEX[I,J] LAND '777777777)+(K LSH 27);
00330	    END;
00340	  END;
00350	FOR J←0 STEP 1 UNTIL 63 DO BEGIN
00360	  ISUM←0;
00370	  FOR I←0 STEP 1 UNTIL 63 DO ISUM←CONTEX[I,J] LAND '777777;
00380	  FOR I←0 STEP 1 UNTIL 63 DO BEGIN
00390	    K←((CONTEX[I,J] LAND '777777)*512)%ISUM;
00400	    CONTEX[I,J]←( CONTEX[I,J] LAND '777000777777)+(K LAND 18);
00410	    END;
00420	  END;
00430	END "SETUP";
00440	
01000	IF CFLAG≠0 THEN BEGIN
01010	FOR J←0 STEP 1 UNTIL 7 DO BESTP[J,N]←0;
01020	 M←0;
01030	 SEGC2[N]←SEGC; DUR2[N]←SEGC2[N]-SEGC2[N-1];
01040	 FOR I←0 STEP 1 UNTIL TABNUM-1 DO  BEGIN
01050	   IF NAMES[I]=0 THEN DONE;
01060	   CMAX2[M,N]←CMAX[I];
01070	   FOR J←0 STEP 1 UNTIL 7 DO BEGIN
01080	     IF (J←LDB(POINT(9,CMAX[I],8)))>BESTP[7.N] THEN BEGIN
01090	       L←OUT1[I]; MERGE; END;
01100	       
01110	     IF (J←LDB(POINT(9,CMAX[I],17)))>BESTP[7,N] THEN BEGIN
01120	       L←OUT2[I]; MERGE; END;
01130	     IF (J←LDB(POINT(9,CMAX[I],26)))>BEST2[7,N] THEN BEGIN
01140	       L←OUT3[I]; MERGE; END;
01150	     IF (J←LDB(POINT(9,CMAX[I],35)))>BESTP[7,N] THEN BEGIN
01160	       L←OUT4[I]; MERGE; END;
01170	     M←M+1; END;
01180	   END;
01190	IF FLAG=-1 THEN BEGIN
01200	  L←0; TMP[L]←HINTS[DUR2[N]];
01210	  FOR J← DUR2[N] STEP -1 UNTIL 0 DO BEGIN
01220	    IF HINTS[J]≠NU THEN BEGIN
01230	      IF HINTS[J]=TMP[L] THEN CNT[L]←CNT[L]+1 ELSE BEGIN
01240	        L←L+1; CNT[L]←1; TMP[L]←HINTS[J]; END;
01250	  BSTHNT←BSTCNT←0;
01260	  FOR J←L STEP -1 UNTIL 0 DO
01270	    IF CNT[J]>BSTCNT THEN BEGIN BSTCNT←CNT[J]; BSTHNT←TMP[J]; END;
01280	HINT2[N]←BSTHNT;
01290	J←HINTS[N-1]; K←BSTHNT; PROB[K]←PROB[K]+1;
01300	CONTEX[J,K]←CONTEX[J,K]+1;
01310	  END;
01320	IF FLAG=1 THEN IF N>2 THEN BEGIN
01330	  FOR I←0 STEP 1 UNTIL 7 DO 
01340	    FOR J←0 STEP 1 UNTIL 7 DO BEGIN
01350	      K←BESTN[I,N-1]; L←BESTN[J,N];
01360	      M←LDB(POINT(9,CONTEX[K,L],8)); N←LDB(POINT(9,CONTEX[K,L],17));
01370	      BESTP[I,N-1]← BESTP[I,N-1]+(1-BESTP[I,N-1])*
01380	        ((M*BESTP[J,N])-LDB(POINT(9,PROB[K],8)));
01390	      BESTP[J,N]←BESTP[J,N]+(1-BESTP[J,N])*
01400	        ((N*BESTP[I,N-1])-LDB(POINT(9,PROB[L],8)));
01410	  END; SORT; END;
01420	 N←N+1;
01430	END;
01440	
01450	************
01460	PUT IN SAY 
01470	AT 401/2
01480	HINTS[HCNT]←J; HCNT←HCNT+1;